John, can you help me with Cartesian powers?  

Following this example in the tutorial 

let monotonic = new_definition
 `monotonic c <=> !q q'. q SUBSET q' ==> (c q) SUBSET (c q')`;;

(* I tried this, and it works: *) 

let plane = new_definition
  `plane S Between  Equiv <=> 
  (Between SUBSET S /\ Equiv SUBSET S)`;;

(* But that's not what I want.  I thought the reference manual said that
^ means Cartesian power, so I tried something that didn't work: *)

let planex = new_definition
  `planex S Between  Equiv <=> 
  (Between SUBSET S^3 /\ Equiv SUBSET S^4)`;;

(*     Warning: inventing type variables
Exception: Failure "new_definition: term not closed". *)

let planexa = new_definition
  `planexa S Between  Equiv <=> 
  (Between:S->S->S->bool /\ Equiv:S->S->S>S->bool)`;;

(*   Same error message. *)

-- 
Best,
Bill 

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to