Skip to content

Commit 2e06fac

Browse files
committed
wip
1 parent 72faad1 commit 2e06fac

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

AVM/Class/Label.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ instance Label.MemberId.hasBEq {lab : Class.Label} : BEq (Class.Label.MemberId l
8686
| _, destructorId _ => false
8787
| methodId m1, methodId m2 => lab.methodsBEq.beq m1 m2
8888

89+
instance Label.MemberId.instReflBEq {lab : Class.Label} : ReflBEq (Class.Label.MemberId lab) where
90+
rfl := sorry
91+
8992
instance Label.MemberId.hasTypeRep (lab : Class.Label) : TypeRep (Class.Label.MemberId lab) where
9093
rep := Rep.composite "AVM.Class.Label.MemberId" [Rep.atomic lab.name]
9194

AVM/Class/Translation/Logics.lean

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,36 @@ private def Method.Message.logicFun
6161
let! [selfRes] := consumedResObjs
6262
let try selfObj : Object classId := Object.fromResource selfRes
6363
check method.invariant selfObj argsData
64-
check method.authorization selfObj argsData sorry
64+
let signatures0 : msg.id.Signatures msg.args := msg.signatures
65+
let signatures : methodId.Signatures argsData := sorry
66+
check method.authorization selfObj argsData signatures
6567
let body := method.body selfObj argsData
6668
let try vals : body.params.Product := tryCast msg.vals
6769
let createdObject : Object classId := body |>.value vals
6870
Logic.checkResourceValues [createdObject.toObjectValue] createdResObjs
6971
&& Logic.checkResourcesPersistent consumedResObjs
7072
&& Logic.checkResourcesPersistent createdResObjs
7173

74+
private def Method.Message.logicFun2
75+
{lab : Ecosystem.Label}
76+
{classId : lab.ClassId}
77+
{methodId : classId.label.MethodId}
78+
(method : Class.Method classId methodId)
79+
(args : Logic.Args)
80+
: Bool :=
81+
let try msg : Message lab := Message.fromResource args.self
82+
83+
-- let try msg : Message lab := Message.fromResource args.self
84+
-- let try argsData := SomeType.cast msg.args
85+
-- let consumedResObjs := Logic.selectObjectResources args.consumed
86+
-- let createdResObjs := Logic.selectObjectResources args.created
87+
-- let! [selfRes] := consumedResObjs
88+
-- let try selfObj : Object classId := Object.fromResource selfRes
89+
-- check method.invariant selfObj argsData
90+
-- let signatures0 : msg.id.Signatures msg.args := msg.signatures
91+
-- let signatures : methodId.Signatures argsData := sorry
92+
-- false
93+
7294
/-- The class logic checks if all consumed messages in the action correspond to
7395
class members, the single consumed object is the receiver, and there is
7496
at least one message. -/

AVM/Message.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ structure Message (lab : Ecosystem.Label) : Type 1 where
2121
/-- The arguments of the message. -/
2222
args : id.Args.type
2323
/-- The signature of the arguments -/
24+
-- TODO sign over memberId and args. Anything else?
2425
signatures : id.Signatures args
2526
/-- Extra data. -/
2627
data : id.Data

0 commit comments

Comments
 (0)