ILogic¶
logic.spad line 2361 [edit on github]
ILogic is an algebra with true, false and other ‘unproven’ values
- /\: (%, %) -> %
 from MeetSemilattice
- =: (%, %) -> Boolean
 returns
true(booleantrue) if Intuitionistic Logic values are the same. Translates from Intuitionistic Logic to Boolean Logic
- \/: (%, %) -> %
 from JoinSemilattice
- _|_: %
 
- ~: % -> %
 ~(x)returns the logical complement ofx. TODO not sure if complement should be included here? intuitionistic logic can have complement but has different axioms to complement in Boolean algebra. Equivalent capability can be provided by implication.
- atom?: % -> Boolean
 returns
trueif this is an atom, that is a leaf node otherwise returnfalseif this is a compound term
- coerce: % -> OutputForm
 from CoercibleTo OutputForm
- deductions: List % -> List %
 assumes
lncontains a list of factors which must betruefor the whole to betrue(such as the list produced by factor). From this deductions attempts to produce a list of other proposition that must also betrueby using modus ponens. This is used to determine the returned type when converting ILogic to types by using the Curry-Howard isomorphism.
- factor: % -> List %
 splits
ninto a list of factors which must betruefor the whole to betrue. This assumes that the top level is already a set of factors separated by/\otherwise the result will just be a list with one entry:'n'. This is used when converting ILogic to types by using the Curry-Howard isomorphism.
- getChildren: % -> List %
 returns child nodes if this is a compound term otherwise returns []
- implies: (%, %) -> %
 implies(a, b)returns the logical implication of ILogic a andb. a is premise,bis conclusion, result isfalse(contradiction) if premise=true and conclusion=false does not mean there is a causal connection
- latex: % -> String
 from SetCategory
- logicF: () -> %
 false(contradiction) is a logical constant.
- logicT: () -> %
 trueis a logical constant.
- opType: % -> Symbol
 if this is a compound op then opType returns the type of that op: “IMPLY”::Symbol =implies “AND”::Symbol=/“OR”::Symbol=
\/“NOT”::Symbol=~ “OTHER”::Symbol=not compound op
- parseIL2: (String, NonNegativeInteger) -> Record(rft: %, pout: NonNegativeInteger)
 Constructs intuitionistic logic terms from a string notation assumes format like this: <term2> :
:=var | “(“<term>”)” <term> ::=var | <term>/\<term> | <term>\/<term> | <term>-><term> | “(“<term>”)”
- parseIL: String -> %
 Constructs intuitionistic logic terms from a string notation assumes format like this: <term> :
:=var | <term>/\<term> | <term>\/<term> | <term>-><term> | “(“<term>”)”
- parseILTerm: (String, NonNegativeInteger) -> Record(rft: %, pout: NonNegativeInteger)
 parseTerm is used by parseIL. It would rarely be called externally but it is here to allow it to call parseIL that is to allow circular calls
- proposition: String -> %
 Constructs a proposition
- redux: % -> %
 attempt to simplify theory apply recursively to subnodes normally this should not be necessary since logic values are interpreted when constructed
- T: %
 
- toString: % -> String
 creates a string representation of this term and its sub-terms
- toStringUnwrapped: % -> String
 similar to ‘toString’ but does not put outer compound terms in brackets
- value: % -> Symbol
 returns: “T”::Symbol =
T“F”::Symbol =_|_“E”::Symbol = error “P”::Symbol = proposition “C”::Symbol = compound Constructs lambda term and bind any variables with the name provided