// Demonstration of relationship merging // The same relationship can be declared multiple times from different perspectives // The resolver will merge them into a single relationship // First, define characters character Alice { age: 30 name: "Alice" } character Bob { age: 32 name: "Bob" } // Declare the relationship from Alice's perspective // In a multi-file system, this might be in alice.sb relationship Friendship_AliceBob { Alice self { // Alice's feelings about the friendship trust: 0.9 enjoyment: 0.95 } other { // How Alice perceives Bob reliability: 0.85 humor: 0.9 } Bob } // Same relationship from Bob's perspective // In a multi-file system, this might be in bob.sb relationship Friendship_AliceBob { Bob self { // Bob's feelings about the friendship trust: 0.85 enjoyment: 0.9 } other { // How Bob perceives Alice reliability: 0.95 humor: 0.8 } Alice } // The resolver will: // 1. Recognize these as the same relationship (same participants + name) // 2. Merge the self/other blocks appropriately // 3. Validate that shared fields (if any) have the same values // Example with shared fields relationship Professional_AliceBob { Alice self { respect: 0.9 } Bob // Shared field - must have same value in all declarations workplace: "TechCorp" } // Same relationship, same shared field value relationship Professional_AliceBob { Bob self { respect: 0.85 } Alice // This MUST match the value in the other declaration workplace: "TechCorp" } // Note: If the shared field values differed, the resolver would // report a validation error about conflicting values