GNU social JP
  • FAQ
  • Login
GNU social JPは日本のGNU socialサーバーです。
Usage/ToS/admin/test/Pleroma FE
  • Public

    • Public
    • Network
    • Groups
    • Featured
    • Popular
    • People

Conversation

Notices

  1. Embed this notice
    *(*(void **(*)()) lizzy)() :v_trans: :v_bi: (fleckenstein@social.lizzy.rs)'s status on Tuesday, 28-May-2024 07:37:08 JST *(*(void **(*)()) lizzy)()  :v_trans: :v_bi: *(*(void **(*)()) lizzy)() :v_trans: :v_bi:

    formal proof of p → (q → r) ⊢ (p → q) → (p → r) in sequence calculus for propositional logic vs formal proof in coq

    In conversation about a year ago from social.lizzy.rs permalink

    Attachments


    1. https://social.lizzy.rs/system/media_attachments/files/112/514/460/209/604/856/original/ff109734fb816a17.png

    2. https://social.lizzy.rs/system/media_attachments/files/112/514/487/873/750/755/original/611ce913e1398fc8.png
    • Embed this notice
      *(*(void **(*)()) lizzy)() :v_trans: :v_bi: (fleckenstein@social.lizzy.rs)'s status on Tuesday, 28-May-2024 07:37:00 JST *(*(void **(*)()) lizzy)()  :v_trans: :v_bi: *(*(void **(*)()) lizzy)() :v_trans: :v_bi:
      in reply to

      I remember some time ago, before I learned about type theory and constructive mathematics, a friend asked me why we don't just make a language that encodes programming using mathematics, i.e. encoding functions and numbers using set theory (functions being sets of tuples, numbers using the von neumann encoding etc.)

      Back then my answer was that it wouldn't be feasible in terms of memory consumption and computation time (which, yes, if you try to use set theory and implement functions as hash sets or something it is) and that we instead have to use informal arguments to apply mathematics to our code, for example arguing that the properties of natural numbers hold for a given integer type in a given range and therefore an algorithm is correct under some preconditions.

      But this is not true, and it's sad that the mathematics that is taught (especially to computer scientists) at university is so far removed from computability. We just need to use a different mathematical foundation, replacing set theory and first-order logic by type theory (which serves as both the deductive system and a way to construct objects).

      This is both beneficial to maths (computable proofs, computer verification of formal proofs, possibility to include axiom of choice / law of excluded middle etc. as additional axioms which make the proof non-computable, making reliance on previous work explicit by including a library) and programming (ability to verify algorithms directly using arbitrarily complex mathematical statements and reasoning, without employing an informal argument anywhere - more safety).

      Philosophically, I also believe the computers are a measure of reality. Logic should have some connection to reality to be useful. Computers happen to be a real, physical thing, and by subjecting logic to the rules of computers, we subject logic to the rules of reality.

      Practically, proving that something exists without being able to actually name it (which, non-constructive logic often does) should be different from proving it by naming it, because "we have found this" is different from "we know that we can be able to find it". In the latter case, from a practical perspective, the work is far from done. There are real-world mathematical proofs with non-computable results where no way to compute the results has been found yet[1]. This is still a valuable result (and in constructive logic it can be encoded as the double negation of a statement, which does NOT imply the truth statement itself - it can be read as "the thing is not a contradiction"), but it should be a different result than "here is the actual thing", and the logical framework should discriminate between these two statements.

      [1] https://en.wikipedia.org/wiki/Robertson%E2%80%93Seymour_theorem

      In conversation about a year ago permalink

      Attachments

      1. No result found on File_thumbnail lookup.
        Robertson–Seymour theorem
        In graph theory, the Robertson–Seymour theorem (also called the graph minor theorem) states that the undirected graphs, partially ordered by the graph minor relationship, form a well-quasi-ordering. Equivalently, every family of graphs that is closed under minors can be defined by a finite set of forbidden minors, in the same way that Wagner's theorem characterizes the planar graphs as being the graphs that do not have the complete graph K5 or the complete bipartite graph K3,3 as minors. The Robertson–Seymour theorem is named after mathematicians Neil Robertson and Paul D. Seymour, who proved it in a series of twenty papers spanning over 500 pages from 1983 to 2004. Before its proof, the statement of the theorem was known as Wagner's conjecture after the German mathematician Klaus Wagner, although Wagner said he never conjectured it. A weaker result for trees is implied by Kruskal's tree theorem, which was conjectured in 1937 by Andrew Vázsonyi and proved in 1960 independently by Joseph Kruskal and S. Tarkowski. Statement A minor of an undirected graph G is...
    • Embed this notice
      *(*(void **(*)()) lizzy)() :v_trans: :v_bi: (fleckenstein@social.lizzy.rs)'s status on Tuesday, 28-May-2024 07:37:06 JST *(*(void **(*)()) lizzy)()  :v_trans: :v_bi: *(*(void **(*)()) lizzy)() :v_trans: :v_bi:
      in reply to

      non-constructive logic just bugs me a lot.

      why not have implications be an atomic thing?

      implications can encode all the other operators (¬a is a → 0, a ∨ b is (a → c) → (b → c) → c for any c and a ∧ b is (a → b → c) → c for any c).

      for a computer, implications are functions, and functions are atomic, they are just computation, and that's what computers do. so, by working like this, you make your proofs executable by a computer. this also means you can extract concrete witnesses from proofs of existence.

      it also gives you an easier syntax to work with, because now you can write your formal proofs using a (typed) lambda calculus (like coq) as syntax instead of the abomination that sequence calculus is.

      Instead, what classical logic has to do is encode an implication a → b as ¬a ∨ b.

      working with this "desugared" version actually requires the law of the excluded middle, which is not constructive/computable.
      trying to prove the desugared version in coq requires introducing an additional axiom (as seen in the attachment), which then prevents your proof from being executed as code.

      with recursive functions, you can even get runnable inductive proofs - as long as the recursive function is proven to terminate.

      In conversation about a year ago permalink

      Attachments


      1. https://social.lizzy.rs/system/media_attachments/files/112/514/560/918/214/196/original/b16ba1f3e049a82c.png
      2. No result found on File_thumbnail lookup.
        http://www.existence.it/
      Mr. Bill repeated this.

Feeds

  • Activity Streams
  • RSS 2.0
  • Atom
  • Help
  • About
  • FAQ
  • TOS
  • Privacy
  • Source
  • Version
  • Contact

GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.

Creative Commons Attribution 3.0 All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.