--- tags: teaching --- ## Natural Deduction Calculator Project [项目文档](/1t_rO_u1RX687v1q8WDWOg) ### Subproject [Combination of trees and decomposition of trees](/p8aXkZX9TdeQ_XJPkbijjA) [形式证明方案设计](/xJIMi-FeTVKQao2foTAc8g) ### Resources [Web 项目开发规范](https://www.kancloud.cn/chandler/css-code-guide/50867) [Natural deduction proof editor and checker](https://proofs.openlogicproject.org/) [Logic2010](https://logiclx.humnet.ucla.edu/) [Concice Course for logic](http://solr.bccampus.ca:8001/bcc/file/17082e35-cf6d-43e1-a5be-7235b2cf8da0/1/A-Concise-Introduction-to-Logic-1490623862.pdf) ### Project Goal A logic computing system that is able to verify easy deduction steps ### Object Type Our basic core object is the expression tree. This is a tree with the following type of nodes - Quantifier nodes: For example, Let, For all $\forall$, For some $\exists$. - Global Operator nodes: For example $+,\times,\land,\lor$ - Local Operator nodes: a link to Quantifier nodes. ### Design #### Representation for quantifiers Quantifiers|Code base 16 -|- let|0x000 $\forall$|0x001 $\exists$|0x002 #### Representation for global operators - We must decide a code for quantifiers and code for $+,-,\times,\frac1x,\land,\lor,\lnot$ Parantesis|Code base 16 -|- (|0x010 )|0x011 Logic Operators|Code base 16 -|- $\lnot$|0x020 $\land$|0x021 $\lor$|0x022 Common compare operators|Code base 16 -|- $=$|0x100 $<$|0x101 $>$|0x102 Common Binary Operators|Code base 16 -|- $-$|0x200 $+$|0x201 $\frac{1}{a}$|0x202 $\times$|0x203 ### Libraries #### Set Theory Common operators|Code base16 -|- $\in$|0x10000 Common logic expressions|Code base 16 -|- p(x): x is set|0x11000 #### Representation for local operaotrs Local operator is a link to a quantifier nodes. It could be represent as **a non-zero integer**, indicating how many steps one need to take to associate the local operator to quantifier nodes. **I am thinking to represent it as negative numbers** For example, here is the expression tree for "Let p Let q, p or q" **Question** Design a criterion of text input to represent the expression tree ```graphviz digraph hierarchy { nodesep=1.0 // increases the separation between nodes node [color=Red,fontname=Courier,shape=circle] //All nodes will this shape and colour edge [color=Blue] //All the lines look like this Root -> "Let p"-> "Let q"-> or -> {p q} // Put them on the same level } ``` We would store it as a tree ```graphviz digraph hierarchy { nodesep=1.0 // increases the separation between nodes node [color=Red,fontname=Courier,shape=circle] //All nodes will this shape and colour edge [color=Blue] //All the lines look like this Root -> "0x00"-> "0x00 "-> "0x12" -> {-3 -2} // Put them on the same level } ``` Here we have all quantifier nodes, global operator nodes and local variable nodes. Here -3 means the local variable that declared by quantifier with the relative position of 3 steps above. ### Test The definition of a function $f:X\longrightarrow Y$ has the limit $$ \lim_{x\mapsto c}f(x)=L $$ $\epsilon-\delta$ Language: Let $X$,$Y$ be two sets, $f$ is a map $f:X\rightarrow Y$. We call $$ \lim_{x\mapsto c}f(x)=L $$ if for any $\epsilon>0$, there exists $\delta>0$, such that forany $x'\in X$, we have $|x'-x|<\delta\implies |f(x)-L|<\epsilon$ ```graphviz digraph hierarchy { nodesep=1.0 // increases the separation between nodes node [color=Red,fontname=Courier,shape=circle] //All nodes will this shape and colour edge [color=Blue] //All the lines look like this "Let X"->"is set" "Let Y"->" is set" "forall t"->"in X" "Let f"->"forall t"->"in Y"->" f "->" t" "Let c"->" in X" "Let L"->" in Y" "forany eps"->" >0" "forsome del"->" >0 " "forany x"->" in X " Root ->"Let X"->"Let Y"-> "Let f"->"Let c"->"Let L"->"forany eps"->"forsome del"->"forany x"->"=>" -> {"<" ," <"} "<"->{"|.|" del} " <"->{"|.| " eps} "|.|"-> "-" -> {x c} "|.| "-> " -" -> {f L} f->" x " } ```