//WARNING: MUST use brackets with all infix operators, and space between operator and arguments compulsory 
// e.g. (x & y)  (x overlap y) (z < x) etc...

	
event_restrictor(past)
	ttrput([head:es|p1==past(head):t])

event_restrictor(pres)
	ttrput([head:es|p1==pres(head):t])

event_restrictor(future)
	ttrput([head:es|p1==future(head):t])

v_intran_content(PRED)
	ttrput(R1^(R1 ++ [e1==PRED:es|head==e1:es|p2==subj(e1, R1.head):t]))
	put(!)

v_tran_content(PRED)
	make(\/1)
	go(\/1)
	ttrput(R1^R2^(R1 ++ (R2 ++ [e1==PRED:es|head==e1:es|p2==subj(e1, R2.head):t|p3==obj(e1, R1.head):t])))
	put(ty(e>(e>t)))
	put(!)
	go(/\1)
	make(\/0)
	go(\/0)
	put(?ty(e))

aux_content(will)
		put(?+eval)
		make(\/L)
		go(\/L)
		put(ty(t))
		event_restrictor(future)
		go(/\L)
		put(ty(e>t))
		delete(?ty(e>t))	
		put(?Ex.fo(x))
		
aux_content(would)
		put(?+eval)
		make(\/L)
		go(\/L)
		put(ty(t))
		event_restrictor(pres)
		go(/\L)
		put(ty(e>t))
		delete(?ty(e>t))	
		put(?Ex.fo(x))

aux_content(did)
		put(?+eval)
		make(\/L)
		go(\/L)
		put(ty(t))
		event_restrictor(past)
		go(/\L)
		put(ty(e>t))
		delete(?ty(e>t))		
		put(?Ex.fo(x))
	
aux_content(do)
		put(?+eval)
		make(\/L)
		go(\/L)
		put(ty(t))
		event_restrictor(pres)
		go(/\L)
		put(ty(e>t))
		delete(?ty(e>t))		
		put(?Ex.fo(x))


		