Content









    Duck Script:   Doubly Reversed Flag : Proof Web
  proof: <<FlagThm>>
    spec: flag.obj
    goal: (forall F : Flag)  rev(rev(F)) = F  .

  relation:
     op _R_ : Flag Flag -> Bool .
     vars F1 F2 : Flag .
     eq F1 R F2 = up? F1 == up? F2 . 
  []

  by: coinduction []

  *** ******************************************
  display:
     title:  "Doubly Reversed Flag"
     putdir: flag
     gethomepage: flag.hp
     getspecexpl: specexp.html

  <<FlagThm>>
     subtitle: "We show that reversing a "+
               "flag twice has no effect."
     getexpl: exp1.html

  <<FlagThm.1>>
     subtitle: "We show that <math>R</math> is "+
               "a hidden <delta/>-congruence."
     getexpl: exp2.html

  <<FlagThm.2>>
     subtitle: "Finally we show "+
               "<math>(rev rev F) R F</math>."
     getexpl: exp3.html 
  []
      

    The Specification of Flag

  bth FLAG is
     bsort Flag .
     bop up_ : Flag -> Flag .
     bop dn_ : Flag -> Flag .
     bop rev_ : Flag -> Flag .
     bop up?_  : Flag -> Bool .
     var F : Flag .
     eq up? up F = true . 
     eq up? dn F = false .
     eq up? rev F = not up? F .
  endb