## Quick start

We shall use the following notation. For our purposes, the pairing is a bilinear map from two cyclic groups, G1 and G2 to a third group GT, where each group has prime order r.

Run `pbc/pbc` and type:

```g := rnd(G1);
g;
```

The first line generates a random element g of the group G1, while the second prints out the value of g. (The syntax was influenced by `bc`, an arbitrary precision calculator.) Next, enter:

```h := rnd(G2);
h;
```

This assigns h to a random element of the group G2. Actually, the default pairing `pbc` uses is symmetric so G1 and G2 are in fact the same group, but in general they are distinct. To compute the pairing applied to g and h, type:

```pairing(g,h);
```

The order of both g and h is r. Let’s generate two random numbers between 1 and r:

```a := rnd(Zr);
b := rnd(Zr);
```

By bilinearity, the resulting output of both of these lines should be identical:

```pairing(g^a,h^b);
pairing(g,h)^(a*b);
```

This program has other features but the commands shown here should be enough to quickly and interactively experiment with many pairing-based cryptosystems using real numbers.