lsts 0.6.34

Large Scale Type Systems
Documentation
use lsts::tlc::TLC;

#[test]
fn check_contradictions() {
   let mut tlc = TLC::new();
   let l1 = tlc.import_file(None, "preludes/l1.tlc").unwrap();

   //Boolean Soundness
   //True and False are constructors of the Boolean type
   //it is therefore unsound to have a term that is both True and False
   tlc.check(Some(l1), "let a:True;").unwrap();
   tlc.check(Some(l1), "let a:False;").unwrap();
   tlc.check(Some(l1), "let a:True+False;").unwrap_err();
}

/* TODO FIXME check invariants at runtime
#[test]
fn check_prime_factors() {
   let mut tlc = TLC::new();
   let l1 = tlc.import_file(None, "preludes/l1.tlc").unwrap();

   tlc.check(Some(l1), "let x:Prime = 0;").unwrap_err();
   tlc.check(Some(l1), "let x:Prime = 1;").unwrap_err();
   tlc.check(Some(l1), "let x:Prime = 2;").unwrap();
   tlc.check(Some(l1), "let x:Prime = 3;").unwrap();
   tlc.check(Some(l1), "let x:Prime = 4;").unwrap_err();
}
*/