Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/charisee/src/compiler/ein/equal.sml
ViewVC logotype

Diff of /branches/charisee/src/compiler/ein/equal.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3173, Sun Mar 29 23:39:25 2015 UTC revision 3174, Mon Mar 30 11:46:58 2015 UTC
# Line 28  Line 28 
28            | isIndex(i::ix,j::jx)=if(i=j) then isIndex(ix, jx) else false            | isIndex(i::ix,j::jx)=if(i=j) then isIndex(ix, jx) else false
29            | isIndex _ = false            | isIndex _ = false
30          fun isSx([],[])=true          fun isSx([],[])=true
31           | isSx((i,_,_)::ix,(j,_,_)::jx)=if(i=j) then isIndex(ix, jx) else false           | isSx((i,_,_)::ix,(j,_,_)::jx)=if(i=j) then isSx(ix, jx) else false
32           | isSx _ = false           | isSx _ = false
33    
34          fun isEqual(e1,e2)=let          fun isEqual(e1,e2)=let
# Line 37  Line 37 
37                  of true => iter(ax,bx)                  of true => iter(ax,bx)
38                  | false => false                  | false => false
39                  (*end case*))                  (*end case*))
40             | iter _ =false
41          in (case (e1,e2)          in (case (e1,e2)
42              of (E.Field(id,ix),E.Field(id2,ix2))        => (id=id2) andalso isIndex(ix, ix2)              of (E.Field(id,ix),E.Field(id2,ix2))        => (id=id2) andalso isIndex(ix, ix2)
43              | (E.Tensor(id,ix),E.Tensor(id2,ix2))       => (id=id2) andalso isIndex(ix, ix2)              | (E.Tensor(id,ix),E.Tensor(id2,ix2))       => (id=id2) andalso isIndex(ix, ix2)
# Line 72  Line 73 
73          in isEqual(e1,e2)          in isEqual(e1,e2)
74          end          end
75      (*isEinEqual:EIN*EIN-> bool*)      (*isEinEqual:EIN*EIN-> bool*)
76      fun isEinEqual(e1,e2)=if((Ein.index e1)=(Ein.index e2)) then let      fun isEinEqual(e1,e2)=let
77    
78            val b=if(((Ein.index e1)=(Ein.index e2)) andalso ((Ein.params e1)=(Ein.params e2)))
79                then let
80              val body1=E.body e1              val body1=E.body e1
81              val body2=E.body e2              val body2=E.body e2
82              val t= isBodyEq(body1,body2)              val t= isBodyEq(body1,body2)
             val _ =testp["\n** In ein equal: ",boolToString t,": " ,P.printbody body1,"\n\t=?=", P.printbody body2]  
83              in              in
84                  t                  t
85              end              end
86          else false          else false
87            val _ =testp["\n** In ein equal: ",boolToString b,": " ,P.printbody (E.body e1),"\n\t=?=", P.printbody(E.body e2)]
88            in b end
89    
90    
91    
92  end; (* local *)  end; (* local *)
93    

Legend:
Removed from v.3173  
changed lines
  Added in v.3174

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0