Added helper protocol support.
This is not a full copy from the compromise branch. In particular, some counts (in arachne.c) are missing, as well as the modified dot output (dotout.c).
This commit is contained in:
		
							parent
							
								
									2e7328e0df
								
							
						
					
					
						commit
						4ec5ea4232
					
				| @ -939,12 +939,17 @@ claimAddAll (const System sys, const Protocol protocol, const Role role) | |||||||
|       } |       } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   addSecrecyList (role->declaredconsts); |   if (!isHelperProtocol (protocol)) | ||||||
|   addSecrecyList (role->declaredvars); |     { | ||||||
|  |       addSecrecyList (role->declaredconsts); | ||||||
|  |       addSecrecyList (role->declaredvars); | ||||||
| 
 | 
 | ||||||
|   /* full non-injective agreement and ni-synch */ |       /* full non-injective agreement and ni-synch */ | ||||||
|   claimCreate (sys, protocol, role, CLAIM_Niagree, NULL, NULL, -1); |       claimCreate (sys, protocol, role, CLAIM_Alive, NULL, NULL, -1); | ||||||
|   claimCreate (sys, protocol, role, CLAIM_Nisynch, NULL, NULL, -1); |       claimCreate (sys, protocol, role, CLAIM_Weakagree, NULL, NULL, -1); | ||||||
|  |       claimCreate (sys, protocol, role, CLAIM_Niagree, NULL, NULL, -1); | ||||||
|  |       claimCreate (sys, protocol, role, CLAIM_Nisynch, NULL, NULL, -1); | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //! Compile a role
 | //! Compile a role
 | ||||||
| @ -1028,8 +1033,11 @@ roleCompile (Term nameterm, Tac tc) | |||||||
| 
 | 
 | ||||||
|   if (switches.addreachableclaim) |   if (switches.addreachableclaim) | ||||||
|     { |     { | ||||||
|       claimCreate (sys, thisProtocol, thisRole, CLAIM_Reachable, NULL, NULL, |       if (!isHelperProtocol (thisProtocol)) | ||||||
| 		   -1); | 	{ | ||||||
|  | 	  claimCreate (sys, thisProtocol, thisRole, CLAIM_Reachable, NULL, | ||||||
|  | 		       NULL, -1); | ||||||
|  | 	} | ||||||
|     } |     } | ||||||
|   if (switches.addallclaims) |   if (switches.addallclaims) | ||||||
|     { |     { | ||||||
|  | |||||||
							
								
								
									
										35
									
								
								src/system.c
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								src/system.c
									
									
									
									
									
								
							| @ -1291,9 +1291,12 @@ selfSession (const System sys, const int run) | |||||||
| int | int | ||||||
| selfResponder (const System sys, const int run) | selfResponder (const System sys, const int run) | ||||||
| { | { | ||||||
|   if (sys->runs[run].role->initiator) |   if (!isHelperProtocol (sys->runs[run].protocol)) | ||||||
|     { |     { | ||||||
|       return false; |       if (sys->runs[run].role->initiator) | ||||||
|  | 	{ | ||||||
|  | 	  return false; | ||||||
|  | 	} | ||||||
|     } |     } | ||||||
|   else |   else | ||||||
|     { |     { | ||||||
| @ -1328,9 +1331,12 @@ selfResponders (const System sys) | |||||||
| int | int | ||||||
| selfInitiator (const System sys, const int run) | selfInitiator (const System sys, const int run) | ||||||
| { | { | ||||||
|   if (sys->runs[run].role->initiator) |   if (!isHelperProtocol (sys->runs[run].protocol)) | ||||||
|     { |     { | ||||||
|       return selfSession (sys, run); |       if (sys->runs[run].role->initiator) | ||||||
|  | 	{ | ||||||
|  | 	  return selfSession (sys, run); | ||||||
|  | 	} | ||||||
|     } |     } | ||||||
|   else |   else | ||||||
|     { |     { | ||||||
| @ -1357,3 +1363,24 @@ selfInitiators (const System sys) | |||||||
|     } |     } | ||||||
|   return count; |   return count; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | //! Check a protocol for being a helper protocol.
 | ||||||
|  | /**
 | ||||||
|  |  * Special helper protocols start with an '@' conform the usage in Gijs | ||||||
|  |  * Hollestelle's work. | ||||||
|  |  */ | ||||||
|  | int | ||||||
|  | isHelperProtocol (Protocol p) | ||||||
|  | { | ||||||
|  |   if (p != NULL) | ||||||
|  |     { | ||||||
|  |       if (p->nameterm != NULL) | ||||||
|  | 	{ | ||||||
|  | 	  if (TermSymb (p->nameterm)->text[0] == '@') | ||||||
|  | 	    { | ||||||
|  | 	      return true; | ||||||
|  | 	    } | ||||||
|  | 	} | ||||||
|  |     } | ||||||
|  |   return false; | ||||||
|  | } | ||||||
|  | |||||||
| @ -208,6 +208,7 @@ int selfResponders (const System sys); | |||||||
| int selfInitiator (const System sys, const int run); | int selfInitiator (const System sys, const int run); | ||||||
| int selfInitiators (const System sys); | int selfInitiators (const System sys); | ||||||
| int enoughAttacks (const System sys); | int enoughAttacks (const System sys); | ||||||
|  | int isHelperProtocol (Protocol p); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| //! Equality for run structure naming
 | //! Equality for run structure naming
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user