Assignment |
Def Assignment == Var  
Thm* Assignment Type
|
Sequent |
Def Sequent == (Formula List) (Formula List)
Thm* Sequent Type
|
decidable |
Def Dec(P) == P P
Thm* A:Prop. Dec(A) Prop
|
sequent_falsifiable |
Def a | S == F S.H.a |= F & F S.C.a | F
Thm* a:Assignment, S:Sequent. a | S Type
|
formula_falsifiable |
Def a | F == (F under a) = 3
Thm* a:Assignment, F:Formula. a | F Type
|
formula_sat |
Def a |= F == (F under a) = 3
Thm* a:Assignment, F:Formula. a |= F Type
|
Three |
Def  == Unit+Unit+Unit
Thm*  Type
|
Formula |
Def Formula
== rec(formula.Var+formula+(formula formula)+(formula formula)+(formula formula))
Thm* Formula Type
|
Var |
Def Var == Atom
Thm* Var Type
|
not |
Def A == A  False
Thm* A:Prop. ( A) Prop
|
C |
Def s.C == s.2
Thm* s:Sequent. s.C Formula List
|
list_all |
Def x L.P(x)
== (letrec list_all L = (Case of L; nil True ; h.t P(h) & list_all(t)) ) (L)
Thm* T:Type, P:(T Prop), L:T List. x L.P(x) Type
Thm* T:Type, P:(T Type). x nil.P(x) Type
|
H |
Def s.H == s.1
Thm* s:Sequent. s.H Formula List
|
valuation |
Def (F under a)
== (letrec val f = case f:
x (a(x));
  p  val(p);
p  q val(p)  val(q);
p  q val(p)  val(q);
p   q val(p)   val(q); )
(F)
Thm* a:Assignment, F:Formula. (F under a)  
|
K_and |
Def p  q == case p: 3 3 ; 3 case q: 3 3 ; 3 3 ; 3 3 ;; 3 q;
Thm* p,q: . p  q  
|
K_not |
Def  p == case p: 3 3 ; 3 3 ; 3 3 ;
Thm* p: .  p  
|
Three_0 |
Def 3 == inl( )
Thm* 3  
|
letrec_body |
Def = b == b
|
letrec_arg |
Def x b(x) (x) == b(x)
|
letrec |
Def (letrec f b(f)) == b((letrec f b(f)) ) (recursive)
|
K_imp |
Def p   q == case p: 3 3 ; 3 case q: 3 3 ; 3 3 ; 3 3 ;; 3 q;
Thm* p,q: . p   q  
|
K_or |
Def p  q == case p: 3 q; 3 case q: 3 3 ; 3 3 ; 3 3 ;; 3 3 ;
Thm* p,q: . p  q  
|
Three_2 |
Def 3 == inr(inr( ))
Thm* 3  
|
formula_case |
Def case F:
x varC(x);
  p1 notC(p1);
p2  p3 andC(p2;p3);
p4  p5 orC(p4;p5);
p6   p7 impC(p6;p7);
== InjCase(F; x. varC(x); F.
InjCase(F; p1. notC(p1); F.
InjCase(F; x. x/p2,p3.andC(p2;p3); F. InjCase(F; x. x/p4,p5.orC(p4;p5), x/p6,p7.impC(p6;p7)))))
|
Three_1 |
Def 3 == inr(inl( ))
Thm* 3  
|
Three_case |
Def case x: 3 case0; 3 case1; 3 case2;
== InjCase(x; zero. case0; one_or_two. InjCase(one_or_two; one. case1; two. case2))
Thm* t:Type{i}, t':Type{j}, t'':Type{k}, c:t, c':t', c'':t''.
case 3 : 3 c; 3 c'; 3 c''; t
Thm* t:Type{i}, t':Type{j}, t'':Type{k}, c:t, c':t', c'':t''.
case 3 : 3 c'; 3 c''; 3 c; t''
Thm* t:Type{i}, t':Type{j}, t'':Type{k}, c:t, c':t', c'':t''.
case 3 : 3 c; 3 c'; 3 c''; t''
|